package com.bl.utils;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.UploadFileRequest;


/**
 * @Author: 范浩田
 * @Date: 2021/8/17 18:12
 */
public class AliStorage {
     public static void main(String[] args) throws Throwable {
          // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
          String endpoint = "oss-cn-beijing.aliyuncs.com";
          // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
          String accessKeyId = "LTAI5t7CZU5Rt5ZBspKZ8pE6";
          String accessKeySecret = "KFdD5Ibdz0l6dQJwz9bYmq8HJQwYtr";

        /*  // 创建ClientConfiguration。ClientConfiguration是OSSClient的配置类，可配置代理、连接超时、最大连接数等参数。
          ClientBuilderConfiguration conf = new ClientBuilderConfiguration();
          // 设置代理服务器验证的用户名。
          conf.setProxyUsername("<yourProxyUserName>");
          //设置代理服务器验证的密码。
          conf.setProxyPassword("<yourProxyPassword>");*/

          // 创建OSSClient实例。
          OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

          ObjectMetadata meta = new ObjectMetadata();
          // 指定上传的内容类型。
//          meta.setContentType("text/plain");

          // 文件上传时设置访问权限ACL。
          // meta.setObjectAcl(CannedAccessControlList.Private);

          // 通过UploadFileRequest设置多个参数。
          // 填写Bucket名称和Object完整路径。Object完整路径中不能包含Bucket名称。
          UploadFileRequest uploadFileRequest = new UploadFileRequest("fanhaotian", "天线宝宝.mp4");

          // 通过UploadFileRequest设置单个参数。
          // 填写Bucket名称。
          //uploadFileRequest.setBucketName("examplebucket");
          // 填写Object完整路径。Object完整路径中不能包含Bucket名称。
          //uploadFileRequest.setKey("exampleobject.txt");
          // 填写本地文件的完整路径。如果未指定本地路径，则默认从示例程序所属项目对应本地路径中上传文件。
          uploadFileRequest.setUploadFile("D:\\应用下载\\百度_1626936960832.mp4");
          // 指定上传并发线程数，默认值为1。
          uploadFileRequest.setTaskNum(5);
          // 指定上传的分片大小。
          uploadFileRequest.setPartSize(2 * 1024 * 1024);
          // 开启断点续传，默认关闭。
          uploadFileRequest.setEnableCheckpoint(true);
          // 记录本地分片上传结果的文件。上传过程中的进度信息会保存在该文件中。
          uploadFileRequest.setCheckpointFile("D:\\应用下载");
          // 文件的元数据。
          uploadFileRequest.setObjectMetadata(meta);
          // 设置上传成功回调，参数为Callbrefusing to merge unrelated historiesack类型。
          //uploadFileRequest.setCallback("yourCallbackEvent");

          // 断点续传上传。
          ossClient.uploadFile(uploadFileRequest);

          // 关闭OSSClient。
          ossClient.shutdown();
     }
}
